package com.shopx.cm.service;

import com.shopx.cm.bean.CmSaleDetail;
import com.shopx.cm.bean.MaterialSaleDTO;
import com.shopx.cm.bean.MaterialSaleReqDTO;
import com.shopx.cm.model.CmSaleDetailModel;
import com.shopx.cmm.DTO.PageDTO;
import java.util.List;
//import com.shopx.base.exception.ShopxException;

/**
 * TODO
 * @author lituo
 * @className: CmSaleDetail
 * @date 2025-03-05
 */
public interface ICmSaleDetailService {

    /**
     * 查询明细记录
     * @author lituo
     * @date 2025-03-05
     * @param cmSaleDetail
     * @return CmSaleDetailModel
     */
    CmSaleDetailModel selectByPrimaryKey(CmSaleDetail cmSaleDetail);

    /**
     * 新增记录
     * @author lituo
     * @date 2025-03-05
     * @param cmSaleDetail
     * @return int
     */
    int insertSelective(CmSaleDetail cmSaleDetail);

    /**
     * 修改记录
     * @author lituo
     * @date 2025-03-05
     * @param cmSaleDetail
     * @return int
     */
    int updateByPrimaryKeySelective(CmSaleDetail cmSaleDetail);

    /**
     * 删除记录
     * @author lituo
     * @date 2025-03-05
     * @param cmSaleDetail
     * @return int
     */
    int deleteByPrimaryKey(CmSaleDetail cmSaleDetail);
	

	/**
     * 查询总记录数
     * @author lituo
     * @date 2025-03-05
     * @param cmSaleDetailModel
     * @return int
     */
    int selectCount(CmSaleDetailModel cmSaleDetailModel);

    /**
     * 查询列表
     * @author lituo
     * @date 2025-03-05
     * @param cmSaleDetailModel
     * @return List<CmSaleDetailModel>
     */
    List<CmSaleDetailModel> selectList(CmSaleDetailModel cmSaleDetailModel);

    /**
     * 分页查询
     * @author lituo
     * @date 2025-03-05
     * @param cmSaleDetailModel
     * @return PageModel<CmSaleDetailModel>
     */
    PageDTO<CmSaleDetailModel> getListPage(CmSaleDetailModel cmSaleDetailModel);

    /**
     * 同步智装销量数据
     */
    void syncSaleDt();

    /**
     * 查询材料销量数据（到材料）
     * @param dto
     * @return
     */
    int querySalesByMaterialCnt(MaterialSaleReqDTO dto);
    List<MaterialSaleDTO> querySalesByMaterialList(MaterialSaleReqDTO dto);
    PageDTO<MaterialSaleDTO> getSalesByMaterial(MaterialSaleReqDTO dto);


    /**
     * 根据分组查询
     * @param dto
     * @return
     */
    List<MaterialSaleDTO> querySalesByGroupList(MaterialSaleReqDTO dto);


    /**
     * 查询材料销量数据（到品牌）
     * @param dto
     * @return
     */
    int querySalesByBrandCnt(MaterialSaleReqDTO dto);
    List<MaterialSaleDTO> querySalesByBrandList(MaterialSaleReqDTO dto);
    PageDTO<MaterialSaleDTO> getSalesByBrand(MaterialSaleReqDTO dto);

    /**
     * 查询材料销量数据（到成控编码）
     * @param dto
     * @return
     */
    int querySalesByCodeCnt(MaterialSaleReqDTO dto);
    List<MaterialSaleDTO> querySalesByCodeList(MaterialSaleReqDTO dto);
    PageDTO<MaterialSaleDTO> getSalesByCode(MaterialSaleReqDTO dto);

    /**
     * 查询材料销量数据（到月份）
     * @param dto
     * @return
     */
    int querySalesByMthCnt(MaterialSaleReqDTO dto);
    List<MaterialSaleDTO> querySalesByMthList(MaterialSaleReqDTO dto);
    PageDTO<MaterialSaleDTO> getSalesByMth(MaterialSaleReqDTO dto);

    /**
     * 品牌品类销售统计报表查询
     * @param dto
     * @return
     */
    List<MaterialSaleDTO> querySalesListByCode(MaterialSaleReqDTO dto);

    /**
     * 根据品牌大区店铺排序
     * @param dto
     * @return
     */
    int querySalesByBrsCnt(MaterialSaleReqDTO dto);
    List<MaterialSaleDTO> querySalesByBrsList(MaterialSaleReqDTO dto);
    PageDTO<MaterialSaleDTO> getSalesByBrsList(MaterialSaleReqDTO dto);
}

